package com.wyl.clinic.utils;

import lombok.extern.slf4j.Slf4j;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

@Slf4j
public class Md5Util {

    public static String md5Encryp(String data){
        try {
            // 创建MessageDigest对象并指定算法为MD5
            MessageDigest md = MessageDigest.getInstance("MD5");

            // 将需要加密的数据转换成字节数组
            byte[] messageBytes = data.getBytes();

            // 使用指定的摘要算法对数据进行计算，生成散列值（即MD5值）
            byte[] hashBytes = md.digest(messageBytes);

            // 将二进制的散列值转换成16进制表示形式
            BigInteger number = new BigInteger(1, hashBytes);
            String md5Hex = number.toString(16);

            // 若结果不足32位，前面补0
            while (md5Hex.length() < 32) {
                md5Hex = "0" + md5Hex;
            }

            log.info("原始字符串: " + data);
            log.info("MD5加密后: " + md5Hex);
            return md5Hex;
        } catch (NoSuchAlgorithmException e) {
            log.error("无法找到MD5算法");
            e.printStackTrace();
        }
        return data;
    }
}
